package com.leet.code.medium_array;

/**
 * @description:    11.盛最多水的容器
 * @author: WYG
 * @time: 2021/1/5 14:49
 */

public class MaxArea {
    //双指针法
    public int fast_maxArea(int[] height) {
        //存储最大面积值
        int max = 0;
        //存储临时产生的面积值
        int temp = 0;
        //i,j用于存储遍历元素的下标
        int i = 0;
        int j = height.length - 1;
        //遍历全部元素
        while (i < j) {
            //当height[i] < height[j]时,使用height[i]作为高计算面积
            //并且此时这个元素已经用过了,可以跳到下一个元素继续遍历,所以i++
            //当height[i] >= height[j]时,使用height[j]作为高计算面积
            //并且此时这个元素已经用过了,可以跳到下一个元素继续遍历,所以j--
            if (height[i] < height[j]) {
                temp = height[i] * (j - i);
                i++;
            } else {
                temp = height[j] * (j - i);
                j--;
            }
            //根据temp存储的面积值与max相比较,取最大的面积值作为结果
            max = max > temp ? max : temp;
        }
        return max;
    }

    //太慢了
    public int maxArea(int[] height) {
        int max = 0;
        int temp = 0;
        for (int i = 0; i < height.length; i++) {
            for (int j = i + 1; j < height.length; j++) {
                if (height[i] < height[j]) {
                    temp = height[i] * (j - i);
                } else {
                    temp = height[j] * (j - i);
                }
                if (temp > max) {
                    max = temp;
                }
            }
        }
        return max;
    }
}
